我們在前一天,撰寫了第一支 Go 程式
今天開始就要來介紹 Go 的語法啦,首先要介紹的是 型別 跟 宣告方式 以及 別名
下面這張表格是 Go 常見的資料型別
資料型別 | 預設值 | 說明 |
---|---|---|
bool | false | 布林 |
string | "" | 字串 |
int, int8, int16, int32, int64 | 0 | 有號整數 |
uint, uint8, uint16, uint32, uint64 | 0 | 無號整數 |
byte | 0 | alias for uint8 |
rune | 0 | alias for int32 |
float32, float64 | 0.0 | 浮點數 |
complex64, complex128 | (0+0i) | 複數 (實數 + 虛數) |
array | [根據型別而定] | 固定長度的陣列 |
slices | nil | 彈性長度的陣列 |
map | nil | 映射,key-value pair,像是 Dictionary |
interface{} | nil | alias for any |
pointer | nil | 指標 |
channels | nil | 用於 goroutines |
如果沒有特別指定型別的話,Go 會自己推斷型別 (跟 Swift 一樣)
整數部分,Go 預設會使用 int
浮點數部分,Go 預設會使用 float64
複數部分,Go 預設會使用 complex128
在許多程式語言中,如果要區分成員是否為 公開 (Public) 或是 私有 (Private) 時
可以直接在變數或是 Method 前加上 public
或 private
但 Go 並不存在這種方式,Go 要區分是否為 Public 或 Private 是透過第一個英文字的大小寫來決定
範例如下
// Public
var PublicVariables string
type PublicStruct struct {}
func PublicFunction() {}
// Private
var privateVariables string
type privateStruct struct {}
func privateFunction() {}
這個是跟其他語言相比,很不一樣的地方
還有一點是,Go 是以 package 來做區分,不同 package 之間只能互相存取 public 的成員
相同 package 則 public、private 成員都可以互相存取
Go 的變數/常數宣告方式如下
/* 不宣告初始值,預設會是對應型別的預設值 */
var i int
/* 宣告初始值 */
var i int = 0
var str string = "go"
var f float64 = 1.20
var ary [5]int = [5]int{1, 2, 3, 4, 5}
var slices []int = []int{1, 2, 3}
var maps = map[string]interface{}{"a": 1, "b": 2, "c": 3}
i := 0
str := "go"
f := 1.20
ary := [5]int{1, 2, 3, 4, 5}
slices := []int{1, 2, 3}
maps := map[string]interface{}{"a": 1, "b": 2, "c": 3}
在 Go 要宣告常數,要使用 const
這個修飾字
/* 讓 Go 推斷型別 */
const pi = 3.14
/* 明確寫出型別 */
const pi float64 = 3.14
如果需要宣告大量的變數/常數的話,可以用括號 ()
包起來,像是下面這樣
// 變數
var (
i int = 0
str string = "go
f float64 = 1.2
ary [5]int = [5]int{1, 2, 3, 4, 5
slices []int = []int{1, 2, 3
maps = map[string]interface{}{"a": 1, "b": 2, "c": 3}
)
// 常數
const (
pi float64 = 3.14
baseUrl string = "https://"
)
顧名思義就是取綽號,寫起來也相當簡單
type RawValue string
以上面這個為例,我們幫 string 型別取了一個綽號叫做 RawValue
,下面就來套用看看
const (
BaseUrl RawValue = "https://"
Root RawValue = "/api"
)
今天簡單介紹了 Go 的資料型別、宣告方式以及別名用法
下一篇會來介紹 if 跟 switch case 的用法
明天見~